/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import ejb.negocio.CatalogoServiceLocal;
import entidades.Familia;
import entidades.Producto;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author ribadas
 */
@ManagedBean(name = "catalogoController")
@SessionScoped
public class CatalogoController extends BaseController {

    // Atributos
    private Familia familiaActual = null;
    private Producto productoActual = null;
    private List<Familia> familias = null;
    private List<Producto> productos = null;
    private String consultaDescripcion;
    private String consultaMarca;
    // EJBs
    @EJB
    private CatalogoServiceLocal catalogoService;

    /** Creates a new instance of CatalogoController */
    public CatalogoController() {
    }

    // Acciones para páginas JSF
    public String doBusquedaDescripcion() {
        String destino = null;

        familiaActual = null;

        if (consultaDescripcion != null) {
            productos = catalogoService.productosPorDescripcion(consultaDescripcion);
            if (productos != null) {
                if (productos.isEmpty()) {
                    destino = "busqueda.vacia";
                } else {
                    destino = "busqueda.resultados";
                }
            }
        }
        return destino;
    }

    public String doBusquedaMarca() {
        String destino = null;

        familiaActual = null;

        if (consultaDescripcion != null) {
            productos = catalogoService.productosPorMarca(consultaMarca);
            if (productos != null) {
                if (productos.isEmpty()) {
                    destino = "busqueda.vacia";
                } else {
                    destino = "busqueda.resultados";
                }
            }
        }
        return destino;
    }

    public String doSeleccionarFamilia() {
        String destino = null;
        long idFamilia = recuperarIdParametro("idFamilia");
        familiaActual = catalogoService.familiaPorID(idFamilia);
        productos = catalogoService.productosPorFamilia(familiaActual.getId());

        if (productos != null) {
            if (productos.isEmpty()) {
                destino = "busqueda.vacia";
            } else {
                destino = "busqueda.resultados";
            }
        }
        return destino;
    }

    public String doVerTodos() {
        String destino = null;

        familiaActual = null;
        productos = catalogoService.productos();

        if (productos != null) {
            if (productos.isEmpty()) {
                destino = "busqueda.vacia";
            } else {
                destino = "busqueda.resultados";
            }
        }
        return destino;
    }

    public String doVerProductoActual(long idProducto) {
        String destino = null;
  
        productoActual = catalogoService.productoPorID(idProducto);
      System.out.println(">>>>> buscar producto con _ID "+idProducto+"-->"+productoActual+"  exist:"+productoActual.getExistencias());
        if (productoActual != null) {
            destino = "detalle.producto";
        }
        return destino;
    }



    // Métodos get y set

    public String getConsultaDescripcion() {
        return consultaDescripcion;
    }

    public void setConsultaDescripcion(String consultaDescripcion) {
        this.consultaDescripcion = consultaDescripcion;
    }

    public String getConsultaMarca() {
        return consultaMarca;
    }

    public void setConsultaMarca(String consultaMarca) {
        this.consultaMarca = consultaMarca;
    }

    public Familia getFamiliaActual() {
        return familiaActual;
    }

    public void setFamiliaActual(Familia familiaActual) {
        this.familiaActual = familiaActual;
    }

    public Producto getProductoActual() {
        return productoActual;
    }

    public void setProductoActual(Producto productoActual) {
        this.productoActual = productoActual;
    }

    public List<Familia> getFamilias() {
        if (familias == null) {
            familias = catalogoService.familias();
        }
        return familias;
    }

    public List<Producto> getProductos() {
        if (productos == null) {
            productos = catalogoService.productos();
        }
        return productos;
    }
    // Metodos privados
}
